This invention relates to electronic systems, and in particular to a system in which a partially defective nonvolatile memory may still be satisfactorily employed without creating erroneous results. In addition this invention also relates to the use of nonvolatile memories having programming errors or nonvolatile memories which lack programming upgrades which would ordinarily render the device inoperative or undesirable.
In embedded systems, on-chip read only memories are important because they provide a high density technique for storing program instructions and data. For example, in some embedded systems, the entire system will operate under control of the program instructions stored in a ROM on the same chip as the processor and other components. These ROMs are typically mask programmable because at the time of manufacture of the entire chip, one of the masks used during that manufacturing process will define the state of each bit in the ROM. A ROM can be thought of as having a layer of wires arranged in rows separated by a layer of insulating material from another layer of wires arranged in columns. Where short circuits are formed between the rows and columns, for example, by providing an opening in the insulation layer using a mask, that address can be considered as representative of a data bit. In this manner a short circuit between the row and column can be considered a “1” and an open connection between the row and column considered a “0.” In practice a transistor is used to select a word or a bit line. This transistor is selected (turned on) when a particular row is selected. The transistor can be programmed at the metal or diffusion layers of conventional integrated circuit manufacturing technologies.
A significant disadvantage of the use of ROMs in such embedded systems or systems on a chip, however, is the difficulty of changing the stored program. After the system is developed, it may be determined that the stored program contains errors, is defective, or otherwise requires revision. Alternatively, the stored program may be satisfactory, but it would be desirable to revise the stored program in some manner, or to upgrade the program for use of the embedded system in a different product. Generally such flexibility has not been possible, and the usual approach to such problems has been to change the masks for the ROM and remanufacture the device.
Because any change in the stored program when the ROM is mask programmable requires the development of a new mask and the manufacture of a new integrated circuit, it is difficult and expensive to make changes in the ROM after the fabrication of a chip. Development of a new mask set typically costs hundreds of thousands of dollars and take weeks or months to complete. Accordingly, what is needed is a method of assuring that the system operates correctly, even if the ROM includes an incorrect instruction or incorrect data.